// ==UserScript==
// @name         Apple到货通知
// @namespace    https://gitee.com/waf2311
// @version      0.1
// @description  Apple到货通知，检测到有货后浏览器会自动弹窗执行发送通知，但是连续弹窗会被浏览器拦截，所以请先尝试必定有货的机型比如iPhone12，待浏览器提示拦截的时候，点击改为永不拦截，再把机型改为你想要的机型，否则被拦截了通知弹窗，会收不到通知。
// @author       TTW
// @match        *://www.apple.com.cn/*
// @grant        unsafeWindow
// @require      https://static.jnmj.cc/js/axios.min.js
// @require      https://static.jnmj.cc/js/request.js

// ==/UserScript==

(function () {
  ('use strict');

  let timer;
  let model = 'MJNC3CH/A'; //iPhone12，电脑端AppleStore选完型号颜色容量后，浏览器地址栏就会出现型号
  let storeId = 'R471'; //西湖Apple Store，填一家离你近的，如果该城市有多家店，其他店有货也会通知你，这里填的优先，对应字段storeNumber
  let city = '杭州'; //杭州，直营店的城市，如果该城市有多家店，任何一家有货都会通知你，对应字段city
  let barkId = 'nNoL8x77SQVYN8mzQLvVxa'; //Bark APP你的设备号，改成你自己的，否则收不到通知，并且通知接口也会报错
  let noticeText = '有货了，抓紧下单'; //通知文案
  let isContinue = false; //刷到有货后是否继续刷，false为停止，true为继续刷，停止后刷新浏览器页面即可再次继续刷

  async function getData() {
    let res = await httpGet(`https://www.apple.com.cn/shop/fulfillment-messages?pl=true&mt=compact&parts.0=${model}&searchNearby=true&store=${storeId}`);
    let stores = res.body.content.pickupMessage.stores.filter((v) => v.city == city);
    stores.forEach((v) => {
      if (v.partsAvailability[model].pickupDisplay == 'available') {
        let url = `https://api.day.app/${barkId}/${encodeURI('Apple ' + v.storeName + noticeText)}`;
        window.open(url);
        // httpGet(url); //直接Get貌似被拦截了，暂时使用打开新窗口发送通知
        if (!isContinue) {
          clearInterval(timer);
        }
      }
      console.log(v.partsAvailability[model].pickupDisplay == 'available' ? '有货了，自动发送通知' : '无货，持续挂机中');
    });
  }

  timer = setInterval(() => {
    getData();
  }, 1000);
})();
